﻿/*
 				________________________________COPYRIGHT_______________________________________
				Die Veröffentlichung dieses Objektes ist Illegal und wird strafrechtlich verfolgt
				werden. Sollte es zu einer Veröffentlichung kommen werden wir die Daten des
				Herrausgebers fündig machen und Anzeige erstatten. Desweiteren ist
				auch jeglicher Besitz dieses Objektes Illegal und kann ebenfalls als Grund für
				eine Anzeige verwendet werden.
				Ausnahmen der veröffentlichung und verleihung gelten nur wenn der Grundbesitzer
				diese durchführt.
				Die Uhrheberrechte dieses Objektes liegen der Entwickler Gruppe CyberScripting vor. 
                © 2011.
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cubeworld;
using cubeworld.GUI;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace cubeworld
{

    public delegate void ClickEventHandler(object sender, EventArgs e);

    class Button : IGUIEvents
    {
        String text;
        Vector2 position;

        SoundEffect se;

        static Point mousePoint;

        MouseState oldMouse = Mouse.GetState();

        public Button(string Text, Vector2 position)
        {
            this.text = Text;
            this.position = position;
            se = Data.content.Load<SoundEffect>("sounds\\select");
        }

        public event ClickEventHandler OnClick;
        public event EventHandler OnKeyDown;

        public void Render(SpriteBatch spriteBatch)
        {
            bool hover = false;

            mousePoint = new Point(Mouse.GetState().X, Mouse.GetState().Y);
            if (new Rectangle((int)position.X, (int)position.Y, (int)Data.buttonNormal.Width,
                (int)Data.buttonNormal.Height)
                .Contains(mousePoint))
            {
                //Zeichne Hover Button
                spriteBatch.Draw(Data.buttonHover, 
                    new Rectangle((int)position.X, (int)position.Y, (int)Data.buttonNormal.Width, (int)Data.buttonNormal.Height), Color.White);
                hover = true;
            }
            else
            {
                //Zeichne Normal Button
                spriteBatch.Draw(Data.buttonNormal, 
                    new Rectangle((int)position.X, (int)position.Y, (int)Data.buttonNormal.Width, (int)Data.buttonNormal.Height), Color.White);
                hover = false;
            }

            Vector2 textV = Data.debugFont.MeasureString(Translator.translate(text));
            Vector2 textPos = new Vector2((Data.buttonNormal.Width / 2) - (textV.X / 2) + position.X, (Data.buttonNormal.Height / 2) - (textV.Y / 2) + position.Y);
            Data.DrawString(Data.debugFont, text, textPos, Color.White);

            if (hover == true && Mouse.GetState().LeftButton == ButtonState.Released && oldMouse.LeftButton == ButtonState.Pressed)
            {
                if (OnClick != null)
                {
                    se.Play();
                    OnClick(this, EventArgs.Empty);
                }
            }

            oldMouse = Mouse.GetState();

        }
    }
}
